// pages/order/order.js
// 订单详情页面
import {
  Order
} from "../../models/order.js"
import {
  Address
} from "../../utils/address.js"
import {
  Enum
} from "../../utils/enum.js"
var address = new Address()
var order = new Order()

Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 都需要
    order: {},
    orderType: "",
    submitText: "",
    // 只在下单的时候需要
    shopcartKey: "",
    userAddress: {},
    // 只在查看订单详情需要
    orderStatus: 0,
    orderID: 0
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function(options) {
    // 看订单详情
    if (options.orderID) {
      // 去数据库找这个订单的信息
      order.getOrderDetail(options.orderID, (res) => {
        this.getOrderDetailRes(res)
      })
    }
    // 购物车下单
    else {
      this.beforePlaceOrder(options)
    }
  },


  onShow: function() {
    var update = wx.getStorageSync(Enum.fromOrder)
    // order的状态有更新
    if (update) {
      wx.setStorageSync(Enum.fromOrder, false)
      order.getOrderDetail(this.data.order.id, (res) => {
        this.getOrderDetailRes(res)
      })
    }
  },

  // 下单之前
  beforePlaceOrder(options) {
    address.getAddress((res) => {
      if (address.processRes(res.statusCode)) {
        this.setData({
          userAddress: res.data
        })
      }
    })
    var data = wx.getStorageSync(options.orderType)
    this.setData({
      shopcartKey: options.shopcartType,
      order: data,
      submitText: Enum.submitText.makeOrder,
      orderType: options.orderType
    })
  },

  // 处理网络请求的结果
  getOrderDetailRes(res) {
    if (order.processRes(res.statusCode)) {
      var result = order.getOrderText(res.data.status, res.data.order_type)
      this.setData({
        order: res.data,
        btnDisable: result.disable,
        submitText: result.text,
        orderType: res.data.order_type,
        orderStatus: res.data.status,
        orderID: res.data.id
      })
    }
  },

  // 提交
  onSubmitbtn(event) {
    var orderStatus = this.data.orderStatus
    // 下单  
    if (!orderStatus) {
      // 有地址
      if (Object.keys(this.data.userAddress).length) {
        order.placeOrder(this.data.order.selectedBookArray, this.data.shopcartKey, this.data.orderType)
        // 下单成功  购物车缓存更新 去支付
        // 拉起微信支付
        // 不成功    提示 返回购物车  
      } else {
        order.toast("请补充地址", "none")
      }
    }

    // 在订单详情页 发货  付款  看物流
    else {
      order.operateOrder(this.data.order, Enum.fromOrder, this.paySuccessFromOrder)
    }
  },

  paySuccessFromOrder() {
    order.toast("支付成功")
    // 网络更新 order list 
    order.setUpdateStorage(Enum.fromOrderList)
    // 返回 
    setTimeout(function() {
      wx.navigateBack({
        delta: 1
      })
    }, 1000)
  },

  onAddress() {
    address.chooseAddress(
      wx.chooseAddress({
        success: (res) => {
          console.log(res)
          this.setData({
            userAddress: res
          })
          address.updateDbAddress(res)
          // 更新数据库的地址信息
        }
      })
    )},


  onBookItem(event) {
    wx.navigateTo({
      url: '/pages/book/book?id=' + event.currentTarget.dataset.id
    })
  }

})